package com.jiangyifen.robot.sdk.listener;

import com.jiangyifen.robot.sdk.event.HumanSentenceCompleteEvent;
import com.jiangyifen.robot.sdk.event.HumanSilenceEvent;
import com.jiangyifen.robot.sdk.event.HumanSpeakingByteStreamEvent;
import com.jiangyifen.robot.sdk.event.HumanSpeakingEvent;
import com.jiangyifen.robot.sdk.event.RobotSayNodeEvent;
import com.jiangyifen.robot.sdk.event.RobotSentenceCompleteEvent;
import com.jiangyifen.robot.sdk.event.RobotSpeakingEvent;
import com.jiangyifen.robot.sdk.event.SipCalleePickupEvent;
import com.jiangyifen.robot.sdk.event.SipErrorEvent;
import com.jiangyifen.robot.sdk.event.SipIncomingCallEvent;
import com.jiangyifen.robot.sdk.event.SipRegisterFailedEvent;
import com.jiangyifen.robot.sdk.event.SipRegisterSuccessfulEvent;
import com.jiangyifen.robot.sdk.event.SipRegisteringEvent;
import com.jiangyifen.robot.sdk.event.SipRemoteHangupEvent;
import com.jiangyifen.robot.sdk.event.SipRingingEvent;

public interface RobotEventListener {

	/**
	 * 机器人说的语音流
	 * 
	 * @param event
	 */
	void onHumanSpeakingByteStreamStream(HumanSpeakingByteStreamEvent event);
	
	/**
	 * 当检测到对端人类说完一整句话时，触发此回调
	 * 
	 * @param event
	 */
	void onHumanSentenceComplete(HumanSentenceCompleteEvent event);
	
	/**
	 * 当检测到对端人类开始说话时，触发此回调
	 * 
	 * @param event
	 */
	void onHumanSpeaking(HumanSpeakingEvent event);
	
	/**
	 * 当机器人说完话后，对面的人类长时间没有说话，触发此回调
	 * 
	 * @param event
	 */
	void onHumanSilence(HumanSilenceEvent event);

	/**
	 * 机器人正在说话
	 * 
	 * @param event
	 */
	void onRobotSpeaking(RobotSpeakingEvent event);
	
	/**
	 * 机器人开始说某个节点
	 * 
	 * @param event
	 */
	void onRobotSayNode(RobotSayNodeEvent event);
	
	/**
	 * 当机器人自己说完一句话时，触发此回调
	 * 
	 * @param event
	 */
	void onRobotSentenceComplete(RobotSentenceCompleteEvent event);
	


	
	
	public void onSipRegistering(SipRegisteringEvent event);
	public void onSipRegisterSuccessful(SipRegisterSuccessfulEvent event);
	public void onSipRegisterFailed(SipRegisterFailedEvent event);
	
	/**
	 * 机器人呼出，对方正在振铃中
	 */
	public void onSipRinging(SipRingingEvent event);
	/**
	 * 有电话呼入
	 */
	public void onSipIncomingCall(SipIncomingCallEvent event);
	public void onSipCalleePickup(SipCalleePickupEvent event);
	public void onSipRemoteHangup(SipRemoteHangupEvent event);
	
	public void onSipError(SipErrorEvent event);
}
